import axios from 'axios'
import wx from 'weixin-js-sdk'
// import { XXX } from '@/utils/url'

const BASIC_CONFIG = {
  title: '2025第四届调味大师名人堂评选',
  desc: '调味大师名人堂，标记属于你的时代!',
  imgUrl: 'https://d.yipingxuan.com/users/202010052051005f7b16b484b80.jpg?imageView2/2/w/1000/h/1000/interlace/1/q/98',
  link: 'https://zcgjcy.com/app/'
}
/**
 * 微信 sdk 签名鉴权引入
 *
 * 自定义分享给朋友
 *
 * @param {Object} {} 对象传值，如果不传，设置 BASIC_CONFIG 默认属性。
 */
export const config = async ({
  title = BASIC_CONFIG.title,
  desc = BASIC_CONFIG.desc,
  imgUrl = BASIC_CONFIG.imgUrl,
  link = BASIC_CONFIG.link
} = BASIC_CONFIG) => {
  const res = await axios({
    // 请求获取签名信息
    url: 'https://zcgjcy.com/api/signature/getSignature',
    params: {
      url: encodeURIComponent( link.split('#')[0] )// 签名中不能包含 # hash 路由之后的参数
    }
  })
  console.log(res.data, '签名信息');

  const { appId, nonceStr, signature, timestamp } = res.data
  wx.config({
    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
    appId, // 必填，公众号的唯一标识
    timestamp, // 必填，生成签名的时间戳
    nonceStr, // 必填，生成签名的随机串
    signature, // 必填，签名
    jsApiList: ['updateAppMessageShareData','onMenuShareTimeline'] // 必填，需要使用的JS接口列表
  })

  wx.ready(function () {
    // 需在用户可能点击分享按钮前就先调用
    console.log("分享标题:", title);
  console.log("分享描述:", desc);
  console.log("分享链接:", link);
  console.log("分享图片:");
  
    wx.updateAppMessageShareData({
      // 分享给朋友
      title, // 分享标题
      desc, // 分享描述
      link:  link.split('#')[0] , // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
      imgUrl,
      success: function () {
        console.log('成功!')
        // 设置成功
      },
      cancel: function () {
        console.log('取消')
      }
    })

    // 分享到朋友圈
    wx.onMenuShareTimeline({
      title, // 分享标题
      link:  link.split('#')[0] , // 分享链接
      imgUrl, // 分享图标
      success: function () {
        console.log('分享到朋友圈成功');
      },
      cancel: function () {
        console.log('分享取消');
      }
    });

  })

  wx.error(function (res) {
    console.log('失败:', res)
    // config信息验证失败会执行error函数，如签名过期导致验证失败，具体错误信息可以打开config的debug模式查看，也可以在返回的res参数中查看，对于SPA可以在这里更新签名。
  })
}